using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace Manaddiction.UI
{
    /// <summary>
    /// 当在菜单中点击卡牌时，会显示这个包含额外游戏信息的弹窗
    /// 也可以在这个面板中买卖卡牌
    /// </summary>
    public class CardZoomPanel : UIPanel
    {
        public CardUI card_ui;            // 卡牌UI组件

        private CardData card;            // 当前显示的卡牌数据
        private static CardZoomPanel instance; // 单例实例

        protected override void Awake()
        {
            base.Awake();
            instance = this;

            // 注册标签按钮点击事件
            TabButton.onClickAny += OnClickTab;
        }

        private void OnDestroy()
        {
            // 注销标签按钮点击事件
            TabButton.onClickAny -= OnClickTab;
        }

        /// <summary>
        /// 显示指定卡牌和变体的详细信息
        /// </summary>
        /// <param name="card">卡牌数据</param>
        public void ShowCard(CardData card)
        {
            this.card = card;

            // 获取并显示玩家拥有的卡牌数量
            string tid = UserCardData.GetTid(card.id);
            UserData udata = GameDataManager.Instance.userData;
            int quantity = udata.GetCardQuantity(tid);

            // 设置卡牌UI和描述文本
            card_ui.SetCard(card);

            Show(); // 显示面板
        }

        /// <summary>
        /// 刷新当前显示的卡牌信息
        /// </summary>
        public void RefreshCard()
        {
            ShowCard(card);
        }
        
        // 标签按钮点击事件处理
        private void OnClickTab(TabButton btn)
        {
            if (btn.group == "menu")
                Hide(); // 点击菜单标签时隐藏面板
        }

        // 获取当前显示的卡牌数据
        public CardData GetCard()
        {
            return card;
        }

        // 获取当前卡牌的唯一标识符
        public string GetCardTid()
        {
            return UserCardData.GetTid(card.id);
        }

        // 获取单例实例
        public static CardZoomPanel Get()
        {
            return instance;
        }
    }
}